package com.lma.crm.base;

import java.io.Serializable;
import java.util.List;

public interface BaseDao<T> {

    /**
     * 保存
     * @param t
     */
    public void save(T t);
    /**
     * 更新
     * @param t
     */
    public void update(T t);
    /**
     * 删除
     * @param t
     */
    public void delete(T t);
    /**
     * 保存或者更新
     * @param t
     */
    public void saveOrUpdate(T t);
    
    /**
     * 查询所有
     * @return
     */
    public List<T> findAll();
    
    /**
     * 条件查询所有
     * @param condition
     * @param params
     * @return
     */
    public List<T> findAll(String condition, Object[] params);
    
    /**
     * 通过id查询
     * @param id
     * @return
     */
    public T findById(Serializable id);
    
    /**
     * 分页，查询所有记录数
     * @param condition
     * @param params
     * @return
     */
    public int getTotalRecord(String condition, Object[] params);
    
    /**
     * 分页+条件查询
     * @param condition
     * @param params
     * @param startIndex
     * @param pageSize
     * @return
     */
    public List<T> findAll(String condition, Object[] params, int startIndex, int pageSize);
    
}
